package sample.test.cc.sampleodo;

import sample.test.agentodo.StateOdo;
import sample.test.agentodo.GuardOdoModify;
import sample.test.agentodo.AgentOdo;
import sample.test.agentodo.BehaviorOdo;
import BESA.util.ReportBESA;
import BESA.Agent.StructBESA;
import BESA.SystemLevel.AdmBESA;

public class MainOdo1 {

    private static final String IP_ADD = "127.0.0.1";
    private static final int RMI_PORT = 9875;
    private static final String MC_ADD = "230.0.0.1";
    private static final int MC_PORT = 2222;
    private static final int GCC_PORT = 2218;

    public static void main(String[] args) {
        // Crear administrador local - Uno solo por maquina virtual
        try {
            AdmBESA admLocal = AdmBESA.createInstance("Asma_2", 1.0, IP_ADD,
                    RMI_PORT, MC_ADD, MC_PORT, GCC_PORT);
//
//            AdmBESA admLocal = AdmBESA.createInstance("Asma_2", 1.0, IP_ADD,
//                    RMI_PORT, MC_ADD, MC_PORT, false);

            Thread.sleep(5000);

            StateOdo stateAgOdo = new StateOdo(3);
            double passwdAgOdo = 1.0;

            StructBESA structOdo = new StructBESA();
            structOdo.addBehavior(BehaviorOdo.class.getName());
            structOdo.bindGuard(GuardOdoModify.class.getName(),
                    BehaviorOdo.class.getName());
            // structOdo.bindGuard("GuardOdoRequest","BehaviorOdo");
            // Crear el agente alias.estado,estructura,passwd
            AgentOdo agOdo = new AgentOdo("odo", stateAgOdo, structOdo, new Double(passwdAgOdo));


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void testSleep(long m) {
        try {
            Thread.sleep(m);
        } catch (InterruptedException ie) {
            ReportBESA.error("[main]" + ie.getMessage());
        }
    }
}
